Concepts > QuickOPC Concepts > QuickOPC Development Models > Imperative Programming Model > Imperative Programming Model for OPC Classic A&E > Obtaining Information (OPC A&E) > Getting Condition State (OPC A&E) |
In OPC Alarms and Events, information is usually provided in form of event notifications, especially for transient (simple and tracking) events. For condition-related events, however, it is also possible to get (upon request) information about the current state of a specified condition.
If you want to obtain the current state information for the condition instance in an OPC Alarms and Events sever, call the GetConditionState method. You pass in individual arguments for machine name, server class, fully qualified source name, condition name, and optionally an array of event attributes to be returned. You will receive back an AEConditionState object holding the current state information about an OPC condition instance.
// This example shows how to obtain current state information for the condition instance corresponding to a Source and // certain ConditionName. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . // OPC client and subscriber examples in C# on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-CSharp . // Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own // a commercial license in order to use Online Forums, and we reply to every post. using System; using OpcLabs.EasyOpc.AlarmsAndEvents; using OpcLabs.EasyOpc.OperationModel; namespace DocExamples.AlarmsAndEvents._EasyAEClient { class GetConditionState { public static void Main1() { // Instantiate the client object. var client = new EasyAEClient(); AEConditionState conditionState; try { conditionState = client.GetConditionState("", "OPCLabs.KitEventServer.2", "Simulation.ConditionState1", "Simulated"); } catch (OpcException opcException) { Console.WriteLine("*** Failure: {0}", opcException.GetBaseException().Message); return; } Console.WriteLine("ConditionState:"); Console.WriteLine(" .ActiveSubcondition: {0}", conditionState.ActiveSubcondition); Console.WriteLine(" .Enabled: {0}", conditionState.Enabled); Console.WriteLine(" .Active: {0}", conditionState.Active); Console.WriteLine(" .Acknowledged: {0}", conditionState.Acknowledged); Console.WriteLine(" .Quality: {0}", conditionState.Quality); // Remark: IAEConditionState has many more properties } } }
' This example shows how to obtain current state information for the condition instance corresponding to a Source and ' certain ConditionName. ' ' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . ' OPC client and subscriber examples in VB.NET on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VBNET . ' Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own ' a commercial license in order to use Online Forums, and we reply to every post. Imports OpcLabs.EasyOpc.AlarmsAndEvents Imports OpcLabs.EasyOpc.OperationModel Namespace AlarmsAndEvents._EasyAEClient Friend Class GetConditionState Public Shared Sub Main1() Dim client = New EasyAEClient() Dim conditionState As AEConditionState Try conditionState = client.GetConditionState("", "OPCLabs.KitEventServer.2", "Simulation.ConditionState1", "Simulated") Catch opcException As OpcException Console.WriteLine("*** Failure: {0}", opcException.GetBaseException().Message) Exit Sub End Try Console.WriteLine("ConditionState:") Console.WriteLine(" .ActiveSubcondition: {0}", conditionState.ActiveSubcondition) Console.WriteLine(" .Enabled: {0}", conditionState.Enabled) Console.WriteLine(" .Active: {0}", conditionState.Active) Console.WriteLine(" .Acknowledged: {0}", conditionState.Acknowledged) Console.WriteLine(" .Quality: {0}", conditionState.Quality) ' Remark: IAEConditionState has many more properties End Sub End Class End Namespace
# This example shows how to obtain current state information for the condition instance corresponding to a Source and # certain ConditionName. # # The Python for Windows (pywin32) extensions package is needed. Install it using "pip install pypiwin32". # CAUTION: We now recommend using Python.NET package instead. Full set of examples with Python.NET is available! # # Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . import time import win32com.client from pywintypes import com_error serverDescriptor = win32com.client.Dispatch('OpcLabs.EasyOpc.ServerDescriptor') serverDescriptor.UrlString = 'opcae://localhost/OPCLabs.KitEventServer.2' #serverDescriptor.ServerClass = 'OPCLabs.KitEventServer.2' sourceDescriptor = win32com.client.Dispatch('OpcLabs.EasyOpc.AlarmsAndEvents.AENodeDescriptor') sourceDescriptor.QualifiedName = "Simulation.ConditionState1" # Instantiate the client object client = win32com.client.Dispatch('OpcLabs.EasyOpc.AlarmsAndEvents.EasyAEClient') print('Getting condition state...') try: conditionState = client.GetConditionState(serverDescriptor, sourceDescriptor, 'Simulated', []) except com_error as e: print('*** Failure: ' + e.args[2][1] + ': ' + e.args[2][2]) exit() print('ConditionState:') print(' .ActiveSubcondition: ', conditionState.ActiveSubcondition) print(' .Enabled: ', conditionState.Enabled) print(' .Active: ', conditionState.Active) print(' .Acknowledged: ', conditionState.Acknowledged) print(' .Quality: ', conditionState.Quality) # Note that IAEConditionState has many more properties print() print('Finished.')
Rem This example shows how to obtain current state information for the condition instance corresponding to a Source and Rem certain ConditionName. Rem Rem Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Rem OPC client and subscriber examples in VBScript on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VBScript . Rem Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own Rem a commercial license in order to use Online Forums, and we reply to every post. Option Explicit Dim ServerDescriptor: Set ServerDescriptor = CreateObject("OpcLabs.EasyOpc.ServerDescriptor") ServerDescriptor.ServerClass = "OPCLabs.KitEventServer.2" Dim SourceDescriptor: Set SourceDescriptor = CreateObject("OpcLabs.EasyOpc.AlarmsAndEvents.AENodeDescriptor") SourceDescriptor.QualifiedName = "Simulation.ConditionState1" Dim Client: Set Client = CreateObject("OpcLabs.EasyOpc.AlarmsAndEvents.EasyAEClient") On Error Resume Next Dim ConditionState: Set ConditionState = Client.GetConditionState(ServerDescriptor, SourceDescriptor, "Simulated", Array()) If Err.Number <> 0 Then WScript.Echo "*** Failure: " & Err.Source & ": " & Err.Description WScript.Quit End If On Error Goto 0 WScript.Echo "ConditionState:" With ConditionState WScript.Echo Space(4) & ".ActiveSubcondition: " & .ActiveSubcondition WScript.Echo Space(4) & ".Enabled: " & .Enabled WScript.Echo Space(4) & ".Active: " & .Active WScript.Echo Space(4) & ".Acknowledged: " & .Acknowledged WScript.Echo Space(4) & ".Quality: " & .Quality Rem Note that IAEConditionState has many more properties End With
# This example shows how to obtain current state information for the condition instance corresponding to a Source and # certain ConditionName. # # Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . # OPC client and subscriber examples in Python on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-Python . # Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own # a commercial license in order to use Online Forums, and we reply to every post. # The QuickOPC package is needed. Install it using "pip install opclabs_quickopc". import opclabs_quickopc # Import .NET namespaces. from OpcLabs.EasyOpc import * from OpcLabs.EasyOpc.AlarmsAndEvents import * from OpcLabs.EasyOpc.OperationModel import * # Instantiate the client object client = EasyAEClient() print('Getting condition state...') try: conditionState = IEasyAEClientExtension.GetConditionState(client, '', 'OPCLabs.KitEventServer.2', 'Simulation.ConditionState1', 'Simulated') except OpcException as opcException: print('*** Failure: ' + opcException.GetBaseException().Message) exit() print('ConditionState:') print(' .ActiveSubcondition: ', conditionState.ActiveSubcondition) print(' .Enabled: ', conditionState.Enabled) print(' .Active: ', conditionState.Active) print(' .Acknowledged: ', conditionState.Acknowledged) print(' .Quality: ', conditionState.Quality) # Note that IAEConditionState has many more properties print() print('Finished.')
In QuickOPC.NET, you can alternatively pass in a ServerDescriptor in place of machine name and server class arguments.
Copyright © 2004-2024 CODE Consulting and Development, s.r.o., Plzen. All rights reserved. Web page: www.opclabs.com
Documentation Home, Send Feedback. Resources: Knowledge Base, Product Downloads. Technical support: Online Forums, FAQ.Missing some example? Ask us for it on our Online Forums! You do not have to own a commercial license in order to use Online Forums, and we reply to every post.